package com.sz.virtualbank.common.utils;

import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.lang3.StringUtils;

/**
 * 密码工具类
 *
 * @author Claude
 */
public class PasswordUtil {

    /**
     * 密码加密
     *
     * @param password 明文密码
     * @param salt     盐值
     * @return 加密后的密码
     */
    public static String encrypt(String password, String salt) {
        if (StringUtils.isBlank(password) || StringUtils.isBlank(salt)) {
            return null;
        }
        // 加盐后进行MD5加密
        return DigestUtils.md5Hex(password + salt);
    }

    /**
     * 密码校验
     *
     * @param password          明文密码
     * @param salt              盐值
     * @param encryptedPassword 加密后的密码
     * @return 是否匹配
     */
    public static boolean verify(String password, String salt, String encryptedPassword) {
        if (StringUtils.isBlank(password) || StringUtils.isBlank(salt) || StringUtils.isBlank(encryptedPassword)) {
            return false;
        }
        // 加密后比较
        System.out.println("==============" + encrypt(password, salt));
        return StringUtils.equals(encrypt(password, salt), encryptedPassword);
    }

    /**
     * 生成随机盐值
     *
     * @return 盐值
     */
    public static String generateSalt() {
        return java.util.UUID.randomUUID().toString().replace("-", "");
    }
}
